package cn.heyige.backend.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.heyige.backend.entity.HexagramDO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 卦象Mapper接口
 */
public interface HexagramMapper extends BaseMapper<HexagramDO> {
    
    /**
     * 根据卦名查找卦象
     * @param name 卦名
     * @return 卦象对象
     */
    @Select("SELECT * FROM hexagram WHERE name = #{name}")
    HexagramDO findByName(@Param("name") String name);
    
    /**
     * 根据卦象符号查找卦象
     * @param symbol 卦象符号
     * @return 卦象对象
     */
    @Select("SELECT * FROM hexagram WHERE symbol = #{symbol}")
    HexagramDO findBySymbol(@Param("symbol") String symbol);
    
    /**
     * 根据卦象符号查找所有匹配的卦象
     * @param symbol 卦象符号
     * @return 卦象对象列表
     */
    @Select("SELECT * FROM hexagram WHERE symbol = #{symbol}")
    List<HexagramDO> findAllBySymbol(@Param("symbol") String symbol);
    
    /**
     * 根据五行属性查找卦象
     * @param fiveElements 五行属性
     * @return 卦象列表
     */
    @Select("SELECT * FROM hexagram WHERE five_elements = #{fiveElements}")
    List<HexagramDO> findByFiveElements(@Param("fiveElements") String fiveElements);
    
    /**
     * 根据自然象征查找卦象
     * @param naturalSymbol 自然象征
     * @return 卦象列表
     */
    @Select("SELECT * FROM hexagram WHERE natural_symbol LIKE CONCAT('%', #{naturalSymbol}, '%')")
    List<HexagramDO> findByNaturalSymbolContaining(@Param("naturalSymbol") String naturalSymbol);
    
    /**
     * 根据关键字搜索卦象
     * @param keyword 关键字
     * @return 卦象列表
     */
    @Select("SELECT * FROM hexagram WHERE name LIKE CONCAT('%', #{keyword}, '%') OR description LIKE CONCAT('%', #{keyword}, '%')")
    List<HexagramDO> searchByKeyword(@Param("keyword") String keyword);
}